<?php namespace app\system\controller;

use houdunwang\dir\Dir;
use houdunwang\request\Request;
use houdunwang\route\Controller;
use houdunwang\validate\Validate;
use system\model\Module as ModuleModel;

class Module extends Controller
{
    //动作
    public function index(ModuleModel $module)
    {
        $field = $module->where('module_is_system',0)->paginate(v('config.article_num'));
        return view('', compact('field'));
    }

    //设计模块
    public function design(ModuleModel $module)
    {
        if (IS_POST) {
            //1.接受post数据
            $post = Request::post();
            //p($post);die;
            Validate::make([
                ['module_title', 'required', '请输入模块中文名称', Validate::MUST_VALIDATE],
            ]);
            //2.判断不能重复创建模块
            //考虑规范，采用目录全部小写
            $post['module_name'] = strtolower($post['module_name']);
            //在addons或者module检测，创建的模块已存在，则不允许重复创建【目录已经存在，代表是模块已经存在】
            if (is_dir("addons/{$post['module_name']}") || is_dir("module/{$post['module_name']}")) {
                return ['valid' => 0, 'message' => '模块已存在，不能重复创建'];
            }
            //3.创建出模块的基本目录结构
            $dirs = [
                'controller', 'model', 'system', 'template',
            ];
            foreach ($dirs as $dir) {
                //Dir::create（）在hdphp手册中组件--目录操作
                Dir::create("addons/{$post['module_name']}/{$dir}");
            }
            //4.生成文件
            $module_name = $post['module_name'];
            $content = <<<str
<?php namespace addons\\{$module_name}\system;

use module\Hdprocessor;

/**
 * 微信处理器
 * Class Processor
 * @package addons\\{$module_name}\system
 */
class Processor extends Hdprocessor
{
	public function handler()
	{

	}
}
str;
            file_put_contents("addons/{$post['module_name']}/system/Processor.php", $content);
            //5.数据存储到数据库
            $module->save($post);
            return ['valid' => 1, 'message' => '模块设计成功'];
        }
        return view();
    }
    //卸载
    public function del(){
        //接受参数
        $module_name = Request::get('module_name');
//       判断结果
       Dir::del("addons/{module_name}");
        ModuleModel::where('module_name',$module_name)->delete();
            return $this->setRedirect('index')->success('操作成功');
        }
}
